﻿using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;
/// <summary>
///分页方法
/// </summary>
public class Pager
{
    public Pager()
    {
        //
        // TODO: 在此处添加构造函数逻辑
        //
    }
    private string _UrlFormat = "?page={0}";
    private int _PageSize = 10;
    private int _RecordCount;
    private int _PageCount = 5;
    public string UrlFormat
    {
        get
        {
            return _UrlFormat;
        }
        set
        {
            _UrlFormat = value;
        }
    }

    /**/
    /// <summary>
    /// 页长度

    /// </summary>
    public int PageSize
    {
        get
        {
            return _PageSize;
        }
        set
        {
            _PageSize = value;
        }
    }
    /**/
    /// <summary>
    /// 当前页码
    /// </summary>
    public int PageIndex
    {
        get
        {
            string Pageindex = HttpContext.Current.Request.QueryString["i"];
            if (Pageindex != null)
            {
                return int.Parse(Pageindex);
            }
            return 1;
        }
    }

    /**/
    /// <summary>
    /// 总记录数
    /// </summary>
    public int RecordCount
    {
        get
        {
            return _RecordCount;
        }
        set
        {
            _RecordCount = value;
        }
    }

    /**/
    /// <summary>
    /// 两边显示个数
    /// </summary>
    public int PageCount
    {
        get
        {
            return _PageCount;
        }
        set
        {
            _PageCount = value;
        }
    }
    public void Render()
    {
        if (RecordCount == 0)
            return ;
        int SumPage = (RecordCount + PageSize - 1) / PageSize;
        int start = PageIndex - PageCount;
        int end = PageIndex + PageCount;
        //以PageIndex为中心，前后个显示Page个页码导航
        if (SumPage > (PageCount * 2 + 1))
        {
            if (start < 1)
            {
                start = 1;
                end = start + 10;
            }
            else if (end > SumPage)
            {
                start = SumPage - 10;
                end = SumPage;
            }
        }
        else
        {
            start = 1;
            end = SumPage;
        }
        string tmp = "<a href=\"" + UrlFormat + "\">[{0}]</a>";
        StringBuilder sb = new StringBuilder(string.Format("页次:{0}/{1}  每页:{2}  共计:{3} 条 ", PageIndex, SumPage, PageSize, RecordCount));
        if (PageIndex > 1)
        {
            sb.Append(string.Format("<a href=\"" + UrlFormat + "\">首页</a> ", 1));
            sb.Append(string.Format(" <a href=\"" + UrlFormat + "\">上一页</a> ", PageIndex - 1));
        }
        for (int i = start; i <= end; i++)
        {
            if (i == PageIndex)
            {
                sb.Append(" <strong>" + PageIndex.ToString() + "</strong> ");
            }
            else
            {
                sb.Append(string.Format(tmp, i));
            }
            sb.Append("&nbsp;");
        }
        if (PageIndex < SumPage)
        {
            sb.Append(string.Format(" <a href=\"" + UrlFormat + "\">下一页</a> ", PageIndex + 1));
            sb.Append(string.Format(" <a href=\"" + UrlFormat + "\">尾页</a>", SumPage));
        }
        HttpContext.Current.Response.Write(sb.ToString());
    }
}